import { request } from "@/utils/https";

/**
 * 获取我的项目
 */

// 后端返回的格式
export interface MyProjectResponseData {
  /**
   * 项目ID
   */
  projectId: number;

  /**
   * 项目名称
   */
  projectName: string;

  /**
   * 总次数
   */
  totalSessions: number;

  /**
   * 剩余次数
   */
  remainingSessions: number;
}

export const getMyProject = () => {
  return request<ResponseData<MyProjectResponseData>>(
    "/api/user/project/summary",
    "GET",
    {},
    {},
  );
};

/**
 * GET 分页获取用户的预约项目列表
 */

// 后端返回的数据
export interface MyProjectAppointmentsResponseData {
  records: recordResponse[];
  pageNumber: number;
  pageSize: number;
  totalPage: number;
  totalRow: number;
}
export interface recordResponse {
  /**
   * 订单ID
   */
  orderId: number;

  /**
   * 总次数
   */
  totalSessions: number;

  /**
   * 剩余次数
   */
  remainingSessions: number;

  /**
   * 项目ID
   */
  projectId: number;

  /**
   * 项目名称
   */
  projectName: string;

  /**
   * 医生ID
   */
  doctorId: number;

  /**
   * 医生姓名
   */
  doctorName: string;

  /**
   * 预约日期（格式：yyyy/MM/dd）
   */
  appointmentDate: string;

  /**
   * 预约时间（格式：HH:mm）
   */
  appointmentTime: string;

  /**
   * 项目图片
   */
  projectImage: string;

  qrCodeUrl: string;
}

// 前端传递数据
export interface MyProjectAppointmentsRequestData {
  pageNumber: number;
  pageSize: number;
  type: 0 | 1; // 0产品 1项目
}
export const getMyProjectAppointments = (
  params: MyProjectAppointmentsRequestData,
) => {
  return request<ResponseData<MyProjectAppointmentsResponseData>>(
    "/api/user/project/appointments",
    "GET",
    params,
    {},
  );
};

/**
 * 爆款项目推荐
  
 */
export interface HotProjectResponseData {
  /**
   * id
   */
  id: number;

  /**
   * 分类关联Id
   */
  categoryId: number;

  /**
   * 项目名称
   */
  name: string;

  /**
   * 项目描述
   */
  description: string;

  /**
   * 项目封面图片
   */
  coverImgUrl: string;

  /**
   * 是否产品 0 是 1否
   */
  isProduct: number;

  /**
   * 是否爆品
   */
  isHot: number;

  /**
   * 是否积分商品 0正常 1否
   */
  isIntegralProduct: number;

  /**
   * 积分商品价格
   */
  integralPrice: number;

  /**
   * 产品价格
   */
  price: number;

  /**
   * 总次数
   */
  totalSessions: number;

  /**
   * 剩余次数
   */
  remainingSessions: number;

  /**
   * 项目状态：0-正常，1-下架
   */
  status: number;

  /**
   * 项目详情图片/视频
   */
  detailImgUrl: string;

  /**
   * 创建时间
   */
  createTime: string;

  /**
   * 送多少积分
   */
  giveIntegral: number;

  /**
   * 更新时间
   */
  updateTime: string;
}

export const getHotProject = (params: MyProjectAppointmentsRequestData) => {
  return request<ResponseData<HotProjectResponseData>>(
    "/api/project/recommend",
    "GET",
    params,
    {},
  );
};

/**
 * 积分记录相关接口
 */

// 积分记录响应数据（与后端PointRecordVO字段匹配）
export interface PointRecordVO {
  /**
   * 记录ID
   */
  id: number;

  /**
   * 用户ID
   */
  userId: number;

  /**
   * 订单ID（获得积分时）
   */
  orderId?: number;

  /**
   * 产品ID（兑换产品时）
   */
  productId?: number;

  /**
   * 积分变动数量（正数为获得，负数为消费）
   */
  pointChange: number;

  /**
   * 变动后积分余额
   */
  balance: number;

  /**
   * 积分变动说明
   */
  description: string;

  /**
   * 创建时间
   */
  createTime: string;

  /**
   * 更新时间
   */
  updateTime: string;
}

// 积分记录分页响应数据
export interface PointRecordPageResponseData {
  records: PointRecordVO[];
  pageNumber: number;
  pageSize: number;
  totalPage: number;
  totalRow: number;
}

// 积分统计响应数据（基于后端实际返回的PointRecordVO）
export interface PointStatisticsVO {
  /**
   * 记录ID
   */
  id: number;

  /**
   * 用户ID
   */
  userId: number;

  /**
   * 订单ID（获得积分时）
   */
  orderId?: number;

  /**
   * 产品ID（兑换产品时）
   */
  productId?: number;

  /**
   * 积分变动数量（正数为获得，负数为消费）
   */
  pointChange: number;

  /**
   * 当前积分余额
   */
  balance: number;

  /**
   * 积分变动说明
   */
  description: string;

  /**
   * 创建时间
   */
  createTime: string;

  /**
   * 更新时间
   */
  updateTime: string;
}

/**
 * 获取当前用户的积分记录（分页）
 */
export const getMyPointRecords = (pageNumber: number = 1, pageSize: number = 10) => {
  return request<ResponseData<PointRecordPageResponseData>>(
    "/api/point/record/my",
    "GET",
    { pageNumber, pageSize },
    {},
  );
};

/**
 * 获取当前用户的积分统计信息
 */
export const getMyPointStatistics = () => {
  return request<ResponseData<PointStatisticsVO>>(
    "/api/point/record/my/statistics",
    "GET",
    {},
    {},
  );
};
